package readerRSS;

import MVC.IModel;
import java.util.ArrayList;

/**
 *
 * @author Tania M
 * @version 1.0
 */
public class RssChannelModel implements IModel {

    //Balises obligatoires du flux
    private String _title = null; //titre du canal
    private String _link = null; //lien du site web du canal
    private String _desc = null; //description
    private ArrayList<RssItemModel> _channelItems = null; //items du canal
    //balises optionnelles du channel
    private String _lang = null;
    private String _docs = null;
    private String _webmasterMail = null;
    private String _datePub = null;

    /**
     * constructeur
     */
    public RssChannelModel() {
        _channelItems = new ArrayList<RssItemModel>();
    }

    /**
     * constructeur de recopie
     *
     * @param obj
     */
    public RssChannelModel(RssChannelModel obj) {
        this._title = obj.getTitle();
        this._link = obj.getLink();
        this._desc = obj.getDesc();
        this._channelItems = obj.getChannelItems();
        this._lang = obj.getLang();
        this._docs = obj.getDocs();
        this._webmasterMail = obj.getWebmasterMail();
        this._datePub = obj.getDatePub();
    }

    /**
     * titre du canal
     *
     * @return the titre
     */
    public String getTitle() {
        return _title;
    }

    /**
     * initialisation du titre du canal
     *
     * @param title the title to set
     */
    public void setTitle(String title) {
        this._title = title;
    }

    /**
     * renvoie le lien du canal (sans les parties article)
     *
     * @return the lien
     */
    public String getLink() {
        return _link;
    }

    /**
     * initialise le lien du canal
     *
     * @param link the link to set
     */
    public void setLink(String link) {
        this._link = link;
    }

    /**
     * renvoie la description du canal
     *
     * @return the description
     */
    public String getDesc() {
        return _desc;
    }

    /**
     * initialise la description du canal
     *
     * @param description the description to set
     */
    public void setDesc(String description) {
        this._desc = description;
    }

    /**
     * renvoie les items (articles) du canal
     *
     * @return the channel_items
     */
    public ArrayList<RssItemModel> getChannelItems() {
        return _channelItems;
    }

    //retourne un item à un index i
    public ArrayList<RssItemModel> getChannelItems(int i) {
        return _channelItems;
    }

    /**
     * initialise les items (articles) du canal
     *
     * @param channelItems the channelItems to set
     */
    public void setChannelItems(ArrayList<RssItemModel> channelItems) {
        this._channelItems = channelItems;
    }

    /**
     * renvoie un item (articles) du canal
     *
     * @param channelItems
     */
    public void setOneChannelItem(RssItemModel channelItems) {
        this.getChannelItems().add(channelItems);
    }

    /**
     * renvoie la langue du canal
     *
     * @return the langue
     */
    public String getLang() {
        return _lang;
    }

    /**
     * initialise la langue du canal
     *
     * @param lang the lang to set
     */
    public void setLang(String lang) {
        this._lang = lang;
    }

    /**
     * @return the docs
     */
    public String getDocs() {
        return _docs;
    }

    /**
     * @param docs the docs to set
     */
    public void setDocs(String docs) {
        this._docs = docs;
    }

    /**
     * @return the webmaster_mail
     */
    public String getWebmasterMail() {
        return _webmasterMail;
    }

    /**
     * @param webmaster_mail the webmaster_mail to set
     */
    public void setWebmasterMail(String webmaster_mail) {
        this._webmasterMail = webmaster_mail;
    }

    /**
     * renvoie la date de la dernière publication sur le canal
     *
     * @return the date_publication
     */
    public String getDatePub() {
        return _datePub;
    }

    /**
     * initialise la date de dernière publication sur le canal
     *
     * @param datePub the datePub to set
     */
    public void setDatePub(String datePub) {
        this._datePub = datePub;
    }

    @Override
    public String toString() {
        // thomas : retourne le titre du flux
        /*
         * tania: Le titre est représentatif. Mais après il faudra modifier
         * surement les controleurs RSS et les vues selon les paramètres qu'on
         * leur passe pour lire le flux RSS (adresse? titre à rechercher dans
         * une arraylist?).
         *
         */
        return _title;
    }
}
